Heise 07.08.2026
09:19 Uhr

Neu in .NET 10.0 [34]: Keine doppelten Attributwerte bei JSON-Deserialisierung


Die neue Einstellung "AllowDuplicateProperties = false" löst bei doppelten Werten in der JSON-Deserialisierung einen Laufzeitfehler aus.

Neu in .NET 10.0 [34]: Keine doppelten Attributwerte bei JSON-Deserialisierung

Die JSON-Bibliothek System.Text.Json war bisher sehr tolerant bei der Deserialisierung von doppelten Attributwerten.

Der folgende Programmcode führt bisher und auch im Standard System.Text.Json in .NET 10.0 nicht zu einem Laufzeitfehler:

In diesem Beispiel wird "LastName" zweimal gesetzt: einmal auf den Nachnamen und fälschlicherweise ein zweites Mal auf eine Website-URL. Dabei verwendet der JSON-Serializer immer den letzten Wert, das heißt, die Ausgabe ist nicht „Person: Holger Schwichtenberg“, sondern „Person: Holger www.IT-Visions.de“.

Das ist neu in .NET 11.0: Dr. Holger Schwichtenberg und weitere Experten präsentieren am 17. November 2026 auf der Online-Konferenz betterCode() .NET 11.0 die Änderungen für Entwicklerinnen und Entwickler. Tickets zum Frühbucherpreis sind im Online-Shop verfügbar.

In System.Text.Json gibt es seit .NET 10.0 Preview 6 bei den JsonSerializerOptions eine neue Eigenschaft AllowDuplicateProperties. Diese hat im Standard den Wert true. Mit der Umstellung auf false erreicht man, dass beim Deserialisieren von JSON-Dokumenten ein Laufzeitfehler entsteht, falls ein Attribut mehrfach gesetzt wird.

Mit AllowDuplicateProperties = false führt diese Situation zu dem Laufzeitfehler

sowohl beim Aufruf der Methode Deserialize() als auch beim Aufruf der Methode Parse().

Folgender Beispielcode nutzt AllowDuplicateProperties = false:

(rme)